object oriented programming golang